package com.skivingcloud.admin.sys.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.skivingcloud.admin.sys.entity.SysRole;
import com.skivingcloud.common.utils.PageParameter;

import java.io.Serializable;
import java.util.List;

/**
 *  服务层。
 *
 * @author skivingcloud
 * @since 2023-08-28
 */
public interface SysRoleService extends IService<SysRole> {
    
    /**
     * 分页查询
     * @param parameter 参数
     * @return 查询结果
     */
    Page<SysRole> queryByPage(PageParameter<SysRole> parameter);
    
    /**
     * 删除角色
     * @param id 角色id
     */
    void removeByIdRelations(Serializable id);
    
    /**
     * 新增角色信息
     * @param sysRole 角色信息
     * @return 结果
     */
    Boolean saveHasRes(SysRole sysRole);
    
    /**
     * 修改角色信息
     * @param sysRole 角色信息
     * @return 修改
     */
    Boolean updateByIdHasRes(SysRole sysRole);
    
    /**
     * 设置角色资源权限
     * @param id 角色ID
     * @param resId 资源权限ID
     */
    void saveRoleRes(String id, String[] resId);
    
    /**
     * 根据租户id获取所有角色
     * @param tenantId 租户id
     * @return 角色
     */
    List<SysRole> listByTenantId(String tenantId);
}
